从这部分开始详细介绍蓝牙协议栈功能和接口,协议栈工程关联实现协议栈的文件以及实现协议栈的任务,该任务也作为协议栈应用的最高优先级任务。
TI采用库文件提供方式作为协议栈提供的一个主策略,尽管如此,还是需要开发者了解协议栈各个抽象的功能和相互作用。
蓝牙5.0核心规范包含LE和BR/EDR两种设备类型,其中LE主要是设计为低功耗、小数据终端产品。
BLE5.0核心主要包含以下功能:
以上功能均在蓝牙5.0协议栈实现,并且可以选择编译。
蓝牙协议栈包含一个Host和Controller两个逻辑实体,这种区分从经典蓝牙的BR/EDR就存在了,各种功能独立实现,任务配置文件和应用相关都在Host的GAP、GATT抽象层。
BLE 工作在无需认证的2.4G免费频段,该频段广泛应用于ISM(工业、科学、医疗)领域。通过跳频通信实现抗干扰特性,GFSK调制,采用1Mbps码元率PHY层设计,可以实现1Mbps波特率通信,BLE5.0优化的物理层设计可以实现2Mbps的PHY层。
GAP工作在以上5个状态机
在Standby
状态,双方设备都处于未连接状态,Advertiser
尝试广播数据,Scanner
接收到广播数据后尝试进行扫描请求,并且得到扫描回复。此时Scanner
产生连接意图,转变成Initiator
发送连接请求,成功连接后发送广播的Advertiser
作为Master
,进行连接请求的Initiator
成为Slave
.
以上状态机转变,角色扮演以及中间完成的设备发现、链路建立、链路终止均由GAP完成。
以上我们讲解过蓝牙系统由Host和Controller两个逻辑实体组成,他们之间的通信、交互通过HCI标准接口完成,基于该标准接口,Host和Controller可以独立在两个MCU实现,通过Uart/SPI等外设完成通信。
逻辑链路控制适配协议层由上层服务提供逻辑链路层访问和进行端对端的数据通信。
安全管理层完成配对和密钥分布,提供同连接设备各层之间的通信安全。
GATT负责主从设备之间的应用数据交换。GATT作为使用的ATT的子流程的一个服务型框架。为主从设备交互数据提供Profile、Service、Characteristic等概念的抽象、管理。
文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。